<?php

require_once "Basic.php";

class ReservasUsuario {
  
  private $id;
  private $list;
  private $nome;
  
  public function __construct($id) {
    if(gettype($id) !== "integer") {
      throw new Exception('$id deve ser integer.');
    }
    $this->id = $id;
    $this->list = new Report();
    $this->buildList();
  }
  
  private function buildList() {
    $db = new DBUtils();
    
    try {
      $db->connect();
      
      $db->runQuery("select * from ReservasUsuario(?)", array($this->id));
      
      for($item = $db->getItem(); $item !== null; $item = $db->getItem()) {
        $listItem = new ReportItem("-");
        $listItem->addLine("Código", $item->idReserva);
        $listItem->addLine("Data Prevista de Início", $item->previsaoInicio->format("d/m/Y H:i"));
        $listItem->addLine("Data Prevista de Fim", $item->previsaoTermino->format("d/m/Y H:i"));
        $listItem->addLine("Filial de Obtenção", $item->nomeFilialObtencao);
        $listItem->addLine("Filial de Devolução", $item->nomeFilialDevolucao);
        $listItem->addLine("Nome do Modelo", $item->nomeModelo);
        $listItem->addLink("Canelar Reserva", "CancelaReserva.php?idReserva=" . $item->idReserva);
        $this->list->addItem($listItem);
      }
      
      $db->close();
    }
    catch(DBError $e) {
      $db->close(false);
      logMessage($e->errors, "ReservasUsuario");
      $this->id = null;
    }
  }

  public function getHtml() {
    return $this->list->getHtml();
  }
  
}

mustBe(isset($_GET["idCliente"]));
$idCliente = intval($_GET["idCliente"]);
mustbe(isLoggedAsEmployee() || isLoggedAsClient($idCliente));
$cliente = Cliente::getFromid($idCliente);
if($cliente === null) {
  header("Location: index.php");
}
$reservas = new ReservasUsuario($idCliente);
$nomeCliente = $cliente->tipoCliente === "fisica" ? $cliente->nomeCliente : $cliente->razaoSocial;
$page = new Page("Suas Reservas [${nomeCliente}]");
$page->addContent($reservas->getHtml());

echo $page->getHtml();

